--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
lang/README.it.md HEAD (b89dc9e6) Text, 20.77 KB
Reticulum MeshChatX
Un fork ampiamente modificato e ricco di funzionalita di Reticulum MeshChat di Liam Cottle.
Questo progetto e indipendente dal progetto originale Reticulum MeshChat e non e affiliato ad esso.
• Sito web: meshchatx.com
• Codice sorgente: github.com/Quad4-Software/MeshChatX
• Mirror: lavaforge.org/Reticulum-Things/MeshChatX
• Release: github.com/Quad4-Software/MeshChatX
• Changelog: CHANGELOG.md
• LXMF: T383838f489752fbef161c64d65e385a4e9fc74
• Umbrel App Store: apps.umbrel.com/app/meshchatx
<a href="https://apps.obtainium.imranr.dev/redirect.html?r=obtainium://add/https://github.com/Quad4-Software/MeshChatX"><img src="https://raw.githubusercontent.com/ImranR98/Obtainium/main/assets/graphics/badge_obtainium.png" height="60" alt="Get it on Obtainium"></a>
rngit NomadNet Node: T3838385399f5a0212477618821e91e88ce053b:/page/index.mu
rngit: T383838git clone rns://926baefe13daf5178c174f158dae1b45/quad4/MeshChatX
MeshChatX NomadNet Node: T383838c10d80b1a42fa958c37a6cc30dc04f53:/page/index.mu
Modifiche importanti rispetto a Reticulum MeshChat
• Usa LXST per le chiamate
• Peewee ORM sostituito con SQL diretto
• Axios sostituito con T383838fetch nativo
• Electron 41.x (runtime Node 24 incluso)
• Wheel T383838.whl con web server e asset frontend integrati per piu opzioni di deploy
• i18n
• PNPM e UV per le dipendenze
│ [!WARNING] MeshChatX non garantisce la compatibilita dei dati con le versioni precedenti di
│ Reticulum MeshChat. Eseguire un backup prima della migrazione o dei test.
│ [!WARNING] I sistemi legacy non sono ancora supportati. Base attuale: Python T383838>=3.11 e Node T383838>=24
│ (Electron 41 allineato a Node 24; T383838engines in T383838package.json e la CI seguono la stessa linea).
Requisiti
• Python T383838>=3.11 (da T383838pyproject.toml)
• Node.js T383838>=24 (da T383838package.json, campo T383838engines)
• pnpm T38383811.1.2 (da T383838package.json, campo T383838packageManager)
• UV (utilizzato in T383838Taskfile.yml e nei workflow CI)
Browser Versions Required:
Safari 16.4 o successivo, Chrome 111 o successivo, Firefox 128 o successivo (interfaccia web integrata).
T282828
task install
task format
task lint
task Tffa657test
task build
Metodi di installazione
Scegli il metodo in base all'ambiente e al formato del pacchetto.
┌─────────────────────────┬──────────────────────┬───────────────────────────────────────────┬─────┐
│ Metodo │ Include frontend │ Architetture │ Id… │
├─────────────────────────┼──────────────────────┼───────────────────────────────────────────┼─────┤
│ Immagine Docker │ Si │ T383838linux/amd64, T383838linux/arm64 │ Av… │
│ Python wheel (T383838.whl) │ Si │ Qualsiasi architettura supportata da Pyt… │ In… │
│ Linux AppImage │ Si │ T383838x64, T383838arm64 │ Us… │
│ Pacchetto Debian (T383838.deb) │ Si │ T383838x64, T383838arm64 │ In… │
│ Pacchetto RPM (T383838.rpm) │ Si │ Dipende dal runner CI per l'artefatto pu… │ Fe… │
│ Da sorgente │ Compilato localmente │ Architettura host │ Sv… │
└─────────────────────────┴──────────────────────┴───────────────────────────────────────────┴─────┘
Note:
• GitHub Actions compila le release con tag (Linux wheel/AppImage/deb/rpm, Windows, macOS, Flatpak, APK Android se il tag è su dev/master, SLSA, bozza di release) in un'unica esecuzione tramite T383838.github/workflows/build-release.yml; l'immagine container tramite T383838.github/workflows/docker.yml. CI Android per branch e PR: T383838.github/workflows/android-build.yml.
• Per Linux, T383838x64 e T383838arm64 AppImage + DEB sono compilate su GitHub; il RPM e tentato e viene caricato quando l'artefatto e prodotto.
Docker
• Docker Hub: T383838quad4io/meshchatx
• GHCR: T383838ghcr.io/quad4-software/meshchatx
T282828
docker compose up -d
T282828
docker run -d --name reticulum-meshchatx Tffea00\
--restart unless-stopped Tffea00\
--init Tffea00\
--user T79c0ff1000:1000 Tffea00\
--security-opt no-new-privileges:true Tffea00\
--cap-drop ALL Tffea00\
--read-only Tffea00\
--tmpfs /tmp:noexec,nosuid,sizeTff7b72=256m Tffea00\
--tmpfs /home/meshchat:nosuid,sizeTff7b72=64m Tffea00\
--cpusTff7b72=T79c0ff2.0 Tffea00\
--memoryTff7b72=1g Tffea00\
--memory-reservationTff7b72=256m Tffea00\
--pids-limitTff7b72=T79c0ff512 Tffea00\
-p T79c0ff127.0.0.1:8000:8000 Tffea00\
-v meshchatx-config:/config Tffea00\
ghcr.io/quad4-software/meshchatx:latest
Al posto dell'immagine GHCR puoi usare T383838quad4io/meshchatx:latest se preferisci Docker Hub.
Il file compose predefinito mappa:
• T383838127.0.0.1:8000 sull'host -> porta T3838388000 del container
• Volume Docker nominato T383838meshchatx-config -> T383838/config per la persistenza (adatto all'utente meshchat dell'immagine, UID 1000, senza T383838chown sull'host per i bind mount)
Opzionale: montare una directory dell'host
Sostituisci la riga del volume con T383838-v "$(pwd)/meshchat-config:/config" (Compose: modifica la voce T383838volumes del servizio). Il container gira come UID 1000; la directory sull'host deve essere scrivibile (tipico: T383838sudo chown -R 1000:1000 ./meshchat-config). Prima del primo avvio crea una directory vuota; altrimenti Docker potrebbe crearla con permessi errati.
Ispezionare o eliminare il volume nominato
T282828
docker volume inspect meshchatx-config
docker rm -f reticulum-meshchatx
docker volume rm meshchatx-config
Installazione da artefatti di release
1) Linux AppImage (x64/arm64)
1. Scaricare T383838ReticulumMeshChatX-v<versione>-linux-<arch>.AppImage dalle release.
2. Rendere eseguibile e avviare:
T282828
chmod +x ./ReticulumMeshChatX-v*-linux-*.AppImage
./ReticulumMeshChatX-v*-linux-*.AppImage
2) Debian/Ubuntu T383838.deb (x64/arm64)
1. Scaricare T383838ReticulumMeshChatX-v<versione>-linux-<arch>.deb.
2. Installare:
T282828
sudo apt install ./ReticulumMeshChatX-v*-linux-*.deb
3) Sistemi RPM
1. Scaricare T383838ReticulumMeshChatX-v<versione>-linux-<arch>.rpm se presente nella release.
2. Installare:
T282828
sudo rpm -Uvh ./ReticulumMeshChatX-v*-linux-*.rpm
4) Python wheel (T383838.whl)
I wheel delle release includono gli asset web compilati.
T282828
pip install ./reticulum_meshchatx-*-py3-none-any.whl
meshchatx --headless
T383838pipx e supportato:
T282828
pipx install ./reticulum_meshchatx-*-py3-none-any.whl
Esecuzione da sorgente (modalita web server)
Per sviluppo o build locali personalizzate.
T282828
git clone https://github.com/Quad4-Software/MeshChatX.git
Tffa657cd MeshChatX
corepack Tffa657enable
pnpm config Tffa657set verify-store-integrity Tffa657true
pnpm install --frozen-lockfile
pip install Ta5d6ff"uv==0.11.15"
uv lock --check
uv sync --group dev
pnpm run build-frontend
uv run python -m meshchatx.meshchat --headless --host T79c0ff127.0.0.1
Note sui comandi di installazione:
• T383838pnpm install --frozen-lockfile rifiuta di aggiornare T383838pnpm-lock.yaml e fallisce se il lockfile non corrisponde a T383838package.json. Cosi' si evita che una versione upstream inattesa venga installata silenziosamente.
• T383838verify-store-integrity=true e' impostato anche nel T383838pnpm-workspace.yaml del progetto; la riga esplicita T383838pnpm config set rafforza inoltre la configurazione utente.
• Gli script di lifecycle (T383838preinstall/T383838postinstall) sono bloccati di default in pnpm v11+. Solo i pacchetti elencati in T383838allowBuilds di T383838pnpm-workspace.yaml possono eseguire script di installazione (attualmente T383838electron, T383838electron-winstaller, T383838esbuild).
• T383838uv lock --check fallisce subito se T383838uv.lock non e' allineato con T383838pyproject.toml; T383838uv sync --group dev risolve poi solo dal lockfile.
• Per un'installazione UV strettamente basata sul lockfile (senza refresh implicito), fissa UV con T383838pip install "uv==0.11.15", in linea con la CI.
Se vuoi aggiornare intenzionalmente le dipendenze, esegui T383838pnpm update / T383838uv lock in un commit dedicato e rivedi il diff del lockfile prima del push.
Esecuzione in sandbox (Linux)
Per eseguire il binario nativo T383838meshchatx (alias: T383838meshchat) con isolamento aggiuntivo del filesystem, puoi usare Firejail o Bubblewrap (T383838bwrap) mantenendo l'accesso di rete normale per Reticulum e l'interfaccia web. Esempi completi (pip/pipx, UV, note sulla seriale USB) sono in:
La stessa pagina compare nell'elenco Documentazione (documentazione MeshChatX) in-app quando viene servita dai file T383838meshchatx-docs in bundle o sincronizzati.
Desktop Linux: font emoji
Il selettore emoji mostra gli emoji Unicode standard usando i font di sistema (Electron/Chromium). Se compaiono quadrati vuoti ("tofu"), installate un pacchetto emoji a colori e riavviate l'app.
┌────────────────────────────┬──────────────────────────────────────────────────────────────────┐
│ Famiglia (esempi) │ Pacchetto │
├────────────────────────────┼──────────────────────────────────────────────────────────────────┤
│ Arch Linux, Artix, Manjaro │ T383838noto-fonts-emoji (T383838sudo pacman -S noto-fonts-emoji) │
│ Debian, Ubuntu │ T383838fonts-noto-color-emoji (T383838sudo apt install fonts-noto-color-emoji) │
│ Fedora │ T383838google-noto-emoji-color-fonts │
└────────────────────────────┴──────────────────────────────────────────────────────────────────┘
Dopo l'installazione, eseguite T383838fc-cache -fv se i glifi non compaiono fino al prossimo accesso. Opzionale: T383838noto-fonts per una copertura simboli più ampia su installazioni minime.
Compilazione pacchetti desktop da sorgente
Gli script sono definiti in T383838package.json e T383838Taskfile.yml.
Linux x64 AppImage + DEB
T282828
pnpm run dist:linux-x64
Linux arm64 AppImage + DEB
T282828
pnpm run dist:linux-arm64
RPM
T282828
pnpm run dist:rpm
Oppure tramite Task:
T282828
task dist:fe:rpm
Build container (wheel, AppImage, deb, rpm)
T383838Dockerfile.build esegue le stesse fasi usate in CI (uv, pnpm, T383838task, dipendenze APT). Orientato a linux/amd64 (tarball NodeSource amd64, Task amd64). Il target predefinito e completo; si puo sovrascrivere con un build-arg.
Valori per T383838MESHCHATX_BUILD_TARGETS: T383838all (default), T383838wheel o T383838electron (AppImage + deb per x64 e arm64, RPM se possibile, senza wheel).
Build:
T282828
docker build -f Dockerfile.build -t meshchatx-build:local .
Solo wheel:
T282828
docker build -f Dockerfile.build --build-arg Te6edf3MESHCHATX_BUILD_TARGETSTff7b72=wheel -t meshchatx-build:wheel .
Copiare T383838/artifacts dall'immagine finita all'host:
T282828
Te6edf3cidTff7b72=Tff7b72$(docker create meshchatx-build:localTff7b72)
docker cp Ta5d6ff"Tffd700${Te6edf3cidTffd700}Ta5d6ff:/artifactsTa5d6ff" ./meshchatx-artifacts
docker rm Ta5d6ff"Tffd700${Te6edf3cidTffd700}Ta5d6ff"
Supporto architetture
• Immagine Docker: T383838amd64, T383838arm64
• Linux AppImage: T383838x64, T383838arm64
• Linux DEB: T383838x64, T383838arm64
• Windows: T383838x64, T383838arm64 (script di build disponibili)
• macOS: script di build disponibili (T383838arm64, T383838universal) per ambienti di build locali
• Android: solo APK universale (vedi android/README.md)
Android
MeshChatX supporta build APK Android native (non solo Termux).
Build APK da sorgente
Dalla root del repository:
T282828
T8b949e# 1) Build delle wheel Chaquopy usate da android/app/build.gradle
bash scripts/build-android-wheels-local.sh
T8b949e# 2) Build APK universal (un debug + una release per esecuzione; vedi android/README.md)
Tffa657cd android
./gradlew --no-daemon :app:assembleDebug :app:assembleRelease
Una sola variante Android. Gradle sincronizza l'intera directory T383838meshchatx/ in T383838app/src/main/python/meshchatx/, incluse le wheel offline del repository. Build documentate e pubblicate usano solo packaging universal: un APK debug e uno release per esecuzione, ciascuno con tutti gli ABI nativi configurati in T383838android/app/build.gradle.
• Debug: T383838android/app/build/outputs/apk/debug/app-debug.apk
• Release: T383838android/app/build/outputs/apk/release/app-release-unsigned.apk
Note:
• Gli output di release non sono firmati finche non configuri la firma (T383838scripts/sign-android-apks.sh).
• Gli ABI nativi nel APK universale seguono T383838android/app/build.gradle (incluso T383838armeabi-v7a se abilitato). Le wheel per T383838armeabi-v7a richiedono Android SDK su T383838ANDROID_HOME (vedi T383838android/README.md).
• Se esiste in root T383838dist/reticulum_meshchatx-*.whl (es. da T383838python -m build --wheel -o dist .), l'aggiornamento del repository in bundle preferisce quella wheel rispetto a PyPI. In CI la wheel viene costruita prima del passo Gradle Android.
Documentazione aggiuntiva:
Configurazione
┌────────────────────────┬──────────────────────────────────────┬──────────────┬───────────────────┐
│ Argomento │ Variabile d'ambiente │ Predefinito │ Descrizione │
├────────────────────────┼──────────────────────────────────────┼──────────────┼───────────────────┤
│ T383838--host │ T383838MESHCHAT_HOST │ T383838127.0.0.1 │ Indirizzo di bin… │
│ T383838--port │ T383838MESHCHAT_PORT │ T3838388000 │ Porta del web se… │
│ T383838--no-https │ T383838MESHCHAT_NO_HTTPS │ T383838false │ Disattiva HTTPS │
│ T383838--ssl-cert / T383838--ssl-key │ T383838MESHCHAT_SSL_CERT / T383838MESHCHAT_SSL_KEY │ (nessuno) │ Percorsi PEM cer… │
│ T383838--rns-log-level │ T383838MESHCHAT_RNS_LOG_LEVEL │ (nessuno) │ Livello di log R… │
│ T383838--headless │ T383838MESHCHAT_HEADLESS │ T383838false │ Non aprire il br… │
│ T383838--auth │ T383838MESHCHAT_AUTH │ T383838false │ Attiva autentica… │
│ T383838--reset-password │ T383838MESHCHAT_RESET_PASSWORD │ T383838false │ Cancella l'hash … │
│ T383838--storage-dir │ T383838MESHCHAT_STORAGE_DIR │ T383838./storage │ Directory dei da… │
│ T383838--public-dir │ T383838MESHCHAT_PUBLIC_DIR │ auto/bundled │ Directory dei fi… │
└────────────────────────┴──────────────────────────────────────┴──────────────┴───────────────────┘
Branch
┌────────┬───────────────────────────────────────────────────────────────────────┐
│ Branch │ Scopo │
├────────┼───────────────────────────────────────────────────────────────────────┤
│ T383838master │ Release stabili. Solo codice pronto per la produzione. │
│ T383838dev │ Sviluppo attivo. Potrebbe contenere modifiche instabili o incomplete. │
└────────┴───────────────────────────────────────────────────────────────────────┘
Sviluppo
Attivita comuni da T383838Taskfile.yml:
T282828
task install
task format
task lint
task Tffa657test
task build
I target T383838Makefile sono wrapper sottili che delegano a T383838task (stessi comandi di sopra):
┌──────────────┬──────────────┬────────────────────────────────────────────┐
│ Comando │ Delega a │ Descrizione │
├──────────────┼──────────────┼────────────────────────────────────────────┤
│ T383838make install │ T383838task install │ Installa dipendenze pnpm e UV │
│ T383838make run │ T383838task run │ Esegue MeshChatX tramite UV │
│ T383838make build │ T383838task build │ Compila artefatti frontend e backend │
│ T383838make lint │ T383838task lint │ ESLint, vue-tsc, knip, Ruff e basedpyright │
│ T383838make test │ T383838task test │ Test frontend e backend │
│ T383838make clean │ T383838task clean │ Rimuove artefatti di build e node_modules │
└──────────────┴──────────────┴────────────────────────────────────────────┘
Versionamento
Versione attuale nel repository: T3838384.8.2.
• L'unico valore che modifichi per un bump di release e T383838version in T383838package.json.
• Esegui T383838pnpm run version:sync (all'inizio anche di T383838pnpm run build) per propagare in T383838pyproject.toml, T383838meshchatx/src/version.py, T383838THIRD_PARTY_NOTICES.txt (riga prodotto), README / lang/README.\* (righe "versione attuale"), esempio pipx in T383838docs/meshchatx_on_raspberry_pi.md, e aiuti in T383838packaging/arch/PKGBUILD.
• T383838meshchatx.__version__ si legge da T383838meshchatx/src/version.py senza importare T383838meshchatx.src, cosi un semplice T383838import meshchatx resta leggero.
• Le voci del changelog restano manuali quando tagghi una release.
Sicurezza
• LEGAL.md
• Controlli di integrita integrati e valori predefiniti HTTPS/WSS nel runtime dell'app.
• Build CI e release su GitHub Actions.
Aggiungere una lingua
Flusso dell'autore: ArgosTranslate, poi LLM locale (Qwen 3 + Gemma 4).
Poi si accettano volentieri fix dalla community (LXMF o come mi contattate).
Il rilevamento locale e automatico. Aggiungi un file in T383838meshchatx/src/frontend/locales/ (es. T383838xx.json) con le stesse chiavi di T383838en.json e un T383838_languageName in cima per l'etichetta nel selettore. Puoi copiare T383838en.json e tradurre tutto a mano; la generazione assistita da machine e opzionale e non e mai obbligatoria.
Opzionale: avvio con Argos Translate -- per una bozza partendo da T383838en.json puoi usare T383838scripts/argos_translate.py (formattazione, output a colori, variabili di interpolazione come T383838{count}).
T282828
T8b949e# Installa argostranslate se non l'hai gia
pipx install argostranslate
T8b949e# Esegui lo script di traduzione
python scripts/argos_translate.py --from en --to xx --input meshchatx/src/frontend/locales/en.json --output meshchatx/src/frontend/locales/xx.json --name Ta5d6ff"Nome della tua lingua"
Dopo qualsiasi passaggio automatico, un LLM o un revisore umano controlli grammatica, contesto e tono (es. formale vs informale).
Esegui T383838pnpm test -- tests/frontend/i18n.test.js --run per verificare la parita delle chiavi con T383838en.json.
Non sono necessarie altre modifiche al codice. L'app, il selettore della lingua e i test scoprono le lingue dalla cartella T383838meshchatx/src/frontend/locales/ durante la compilazione.
Donazioni
Le donazioni sono facoltative. Servono a finanziare tempo e impegno per sviluppare questa app.
Come donare: donate.md (Monero, Ko-Fi, Buy Me a Coffee).
Crediti
• Liam Cottle - Reticulum MeshChat originale
• RFnexus - parser micron (JavaScript)
• markqvist - Reticulum, LXMF, LXST
Licenza
Le parti di proprieta del progetto sono rilasciate sotto 0BSD.
Le parti originali upstream da Reticulum MeshChat restano sotto MIT.
Per testo completo e note, vedi ../LICENSE.
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────